package com.ruoyi.worker.mapper.attendance;

import com.ruoyi.worker.domain.workAttendance.RzScheduleTask;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.core.parameters.P;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @ClassTitle: RzScheduleTaskMapper
 * @ProjectName guiyang
 * @Description: 排班任务Mapper接口
 * @Author Hush. ultraman_zero@aliyun.com
 * @Date 2021/11/16
 * @Time 22:13
 */
@Mapper
public interface RzScheduleTaskMapper {

    /**
     * 查询排班任务
     *
     * @param id 排班任务主键
     * @return 排班任务
     */
    public RzScheduleTask selectRzScheduleTaskById(Long id);

    /**
     * 查询排班任务列表
     *
     * @param rzScheduleTask 排班任务
     * @return 排班任务集合
     */
    public List<RzScheduleTask> selectRzScheduleTaskList(RzScheduleTask rzScheduleTask);

    /**
     * 新增排班任务
     *
     * @param rzScheduleTask 排班任务
     * @return 结果
     */
    public int insertRzScheduleTask(RzScheduleTask rzScheduleTask);

    /**
     * @author: 陈宇寰
     * @date: 2021-12-24 14:29:18
     * @params:
     * @return:
     * @description: 是否已存在排班计划
     */
    int taskIsExists(@Param("startDate") Date startDate,@Param("endDate") Date endDate,@Param("deptId")Long deptId);

    /**
     * 修改排班任务
     *
     * @param rzScheduleTask 排班任务
     * @return 结果
     */
    public int updateRzScheduleTask(RzScheduleTask rzScheduleTask);

    /**
     * 删除排班任务
     *
     * @param id 排班任务主键
     * @return 结果
     */
    public int deleteRzScheduleTaskById(Long id);

    /**
     * 批量删除排班任务
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteRzScheduleTaskByIds(Long[] ids);

    /**
     * 根据班组id查询班组人员信息
     *
     * @param deptId 班组id
     * @return 结果
     */
    List<Map<String, Object>> selectTermWorker(Long deptId);

    /**
     * 校验排班任务模板有无日期冲突
     *
     * @param dto 条件
     * @return 日期冲突
     */
    List<RzScheduleTask> checkTaskShiftDate(RzScheduleTask dto);
}
